# -*- coding: utf-8 -*-
"""
@Time    : 2024/7/11 14:52 
@Author  : ZhangShenao 
@File    : exponent_generator.py 
@Desc    : 指数生成器

实现generator的关键在于yield关键字

generator可以生成无限集合
"""


def exponent_generator(exponent: int) -> int:
    """
    指数生成器
    从i=1开始,生成i^exponent的结果
    该生成器可以无限生成
    :param exponent: 指数
    :return: 生成器
    """

    i = 1
    while True:
        yield i ** exponent  # yield关键字会返回一个值,并暂停函数的执行,返回值作为next()函数的调用结果
        i += 1  # 当next()函数调用结束,会继续执行生成器中的代码,这里的变量i并不会清除,而是持续累加


# 使用生成器,生成x^3
exponent_of_3 = exponent_generator(3)
for i in range(10):
    print(next(exponent_of_3), flush=True, end='\t')
print()
# 1	 8	27	64	125	216	343	512	729	1000
